package com.admin.service;

import com.admin.req.declare.FlagReq;
import com.admin.req.declarereturn.ReturnReq;
import com.admin.req.score.ScoreReq;
import com.admin.vo.PageVO;
import com.admin.vo.ResultVO;
import com.admin.vo.declare.DeclareBatchScoreInfoVO;
import com.admin.vo.declare.DeclareListVO;
import com.admin.vo.declare.DeclareSampleVO;
import com.admin.vo.declare.province.ProvinceFlagVO;
import com.admin.vo.declareDetail.DeclareDetailVO;

import java.util.Map;

/**
 * 申报service
 *
 * @author yangzhongliang
 * @date 2022/05/16
 */
public interface DeclareProvinceService {

    /**
     * 计算 - 登录人员 - 所拥有的权限模块 - 总的打分数
     * @param userId
     * @return
     */
    Double totalPermissionsModuleScore(Integer userId, String columnsScore);

    String getPermissionsColumnsScore();

    /**
     * 列表
     * @param pageIndex
     * @param pageSize
     * @param params
     * @return
     */
    ResultVO<PageVO<DeclareListVO>> getPageList(Integer pageIndex, Integer pageSize, Map<String, Object> params);

    /**
     * 区县评分 - 保存评分信息
     * @param userId
     * @param scoreReq
     * @return
     */
    ResultVO saveScore(Integer userId, ScoreReq scoreReq);

    /**
     * 区县 回退
     * @param userId
     * @param req
     * @return
     */
    ResultVO provinceReturn(Integer userId, ReturnReq req);



    /**
     *  - 查询详情
     * @param id
     * @return
     */
    DeclareDetailVO detail(Integer id);



    /**
     * 去抽样
     * @param userId  用户id
     * @param declareType 申报类型
     * @return
     */
    DeclareSampleVO toSample(Integer userId, Integer declareType);


    /**
     *  保存 抽样
     * @param userId
     * @param declareType
     * @param sampleRate
     * @param sampleScope
     * @return
     */
    DeclareSampleVO saveSample(Integer userId, Integer declareType, Integer sampleRate, Integer sampleScope);


    /**
     * 批量赋分
     * @param userId
     * @param declareIds
     * @return
     */
    Integer batchScore(Integer userId, String declareIds);


    /**
     * 批量赋分 - 弹框信息
     * @param userId
     * @return
     */
    DeclareBatchScoreInfoVO getBatchScoreInfo(Integer userId);


    /**
     * 单个标记
     * @param userId
     * @param flagReq
     * @return
     */
    Boolean flagDeclare(Integer userId, FlagReq flagReq);

    /**
     * 去批量标记
     * @param flagReq
     * @return
     */
    ProvinceFlagVO toBatchFlag(FlagReq flagReq);

    /**
     * 保存批量标记结果
     * @param flagReq
     * @return
     */
    ResultVO saveBatchFlag(FlagReq flagReq);



}
